var mongoose = require('mongoose');
const DataModel = require('../Models/classify.model');
const newsDataModel = require('../Models/news.model');
exports.create = function(req,res,next){
	const dataModel = new DataModel(req.body);

	dataModel.save()
	.then(data=>{
		res.json(data);
	})
}

exports.get = function(req,res,next){
	var id = req.params.id;
	DataModel.findById(id, function (err, data) {
	  res.json(data);
	})
}


exports.update = function(req,res,next){
	const id = req.params.id;
	DataModel.findByIdAndUpdate(id, {$set: req.body}, {new:false})
	.then(data=>{
		res.json(data);
	})

}
exports.remove = function(req,res,next){
	const id = req.params.id;
    var ids = [];
    //findOne寻找自身
	DataModel.findOne({_id: id},function(err,doc){
		if(doc){
			 ids = [doc._id];//将自身的_id加入进去,否则无法删除自身
             doc.getChildren().then(function(docs){//寻找子节点的_id
                //结果是平行的数据，数组形式
                var length=docs.length
		      for(var i=0;i<length;i++){
		      	ids.push(docs[i]._id);
			  }
			  if(ids){
				DataModel.remove({ _id : {$in : ids}})
				.then(data=>{
					res.json({"msg":"deletes success","status":200});
				})
			  }else{
				res.json({"msg":"deletes fail","status":400});  
			  }
		    });
		}
	})
}
exports.showList = function(req,res,next){
	const id = req.params.id;
	var ids = [];
	DataModel.findOne({_id: id},function(err,doc){
		if(doc){
			 ids = [doc._id];//不加这一句就只删掉它下面的子节点，无法删除它自身
			 doc.getChildren().then(function(docs){//找到它下面所有的子节点

		      for(var i=0;i<docs.length;i++){
		      	ids.push(docs[i]._id);
			  } 
			  res.json(ids) ;  
		    });
		}
			
	})
}
// 获取子节点
// exports.allnode=function(req,res,next){
//     const id = req.params.id;
//     var ids = [];
//     DataModel.findOne({_id: id},function(err,doc){
//         if(doc){
//             ids = [doc._id];
//             doc.getChildren().then(function(docs){
//                 for(var i=0;i<docs.length;i++){
//                     ids.push(docs[i]._id);
//                 }
//                 res.json(ids);
//             })
//         }
//     });
    
// }
//递归成树
function reverseTree(data, pid){ 
    var result = [],
    temp;
    var data = JSON.parse(JSON.stringify(data)); 
        //data是MongoDB的集合查询结果
        //因为DataModel的object有Schem的条件约束，不能添加其它字段
        //所以将一个DataModel的object转成了JS的Object
	for(var i in data){
        //第一次判断的pid为空，作为根节点
		if(data[i].parentId == pid){
			result.push(data[i]);
            temp = reverseTree(data, data[i]._id);//实现递归
			if(temp.length>0){
				data[i].children = temp;
			}
		}
	}
	return result;
}
exports.list = function(req,res,next){
	const type = req.params.type;
	DataModel.find({type:type},function(err,data){
        //data是MongoDB的集合的对象
		var rpTree = reverseTree(data, null);
		res.json(rpTree);
	})
	
}